package old;

import java.util.*;

// 员工信息管理类，使用Set集合实现员工信息的增删改查功能
public class TestSet {
    // 显示主菜单，提供用户操作选项
    public static void menu() {
        System.out.println("欢迎来到员工信息管理系统");
        System.out.println("0. 退出系统");
        System.out.println("1. 添加员工");
        System.out.println("2. 查询所有的员工");
        System.out.println("3. 根据员工姓名查询");
        System.out.println("4. 删除员工信息");
        System.out.println("5. 根据员工编号查询");
        System.out.println("6. 根据员工编号修改年龄");
        System.out.println("请选择你需要进行的操作");
    }

    // 1. 添加员工：将员工对象添加到员工Set中
    public void addEmp(Set<Emp> set, Emp emp) {
        boolean added = set.add(emp); // 将员工对象添加到集合中
        if (added) {
            System.out.println("员工添加成功");
        } else {
            System.out.println("员工添加失败，可能已存在相同的员工信息");
        }
    }

    // 2. 查询所有员工：遍历员工Set并打印每个员工信息
    public void findAllEmp(Set<Emp> set) {
        if (set.isEmpty()) {
            System.out.println("员工集合为空");
            return;
        }
        for (Emp emp : set) {
            System.out.println(emp); // 打印员工信息
        }
    }

    // 3. 根据员工姓名查询员工信息
    public void findEmpByName(Set<Emp> set, String name) {
        boolean found = false;
        for (Emp emp : set) {
            // 判断姓名是否等于集合中的姓名，等于则打印该员工信息
            if (name.equals(emp.getName())) {
                System.out.println(emp);
                found = true;
            }
        }
        if (!found) {
            System.out.println("未找到姓名为 " + name + " 的员工");
        }
    }

    // 4. 删除员工信息：根据员工工号删除员工信息
    public void deleteEmpByNumber(Set<Emp> set, String number) {
        Emp empToRemove = null;
        for (Emp emp : set) {
            // 判断输入的工号是否等于集合中的工号
            if (number.equals(emp.getNumber())) {
                empToRemove = emp;
                break;
            }
        }

        if (empToRemove != null) {
            set.remove(empToRemove);
            System.out.println("员工删除成功，剩余员工：");
            findAllEmp(set);
        } else {
            System.out.println("未找到工号为 " + number + " 的员工，删除失败");
        }
    }

    // 5. 根据员工编号查询员工信息，返回Emp对象
    public Emp findEmpByNumber(Set<Emp> set, String number) {
        for (Emp emp : set) { // 使用增强for循环遍历集合
            // 判断工号是否等于集合中的工号，等于则返回该员工对象
            if (number.equals(emp.getNumber())) {
                return emp;
            }
        }
        return null; // 未找到则返回null
    }

    // 6. 根据员工编号修改年龄：先查询需要修改的员工，再修改其年龄
    public void updateEmpAge(Set<Emp> set, Emp emp) {
        Emp existingEmp = findEmpByNumber(set, emp.getNumber());
        if (existingEmp != null) {
            // 从集合中移除原员工
            set.remove(existingEmp);
            // 修改年龄后重新添加
            existingEmp.setAge(emp.getAge());
            set.add(existingEmp);
            System.out.println("员工年龄修改成功，新信息：");
            System.out.println(existingEmp);
        } else {
            System.out.println("未找到工号为 " + emp.getNumber() + " 的员工，修改失败");
        }
    }
}